package com.ftg.learn.day04;

/**
 * 双循环
 *
 * @author 布衣
 */
public class LearnDoubleFor {


    /**
     * C： 过程 .java 4W
     * 6个原则 1法则
     * 6 : 单一原则 ： 一个类只做一件事情，一个方法最好只完成一个功能。
     * : 里氏替代原则 ： 父类和子类之间是可替换的。变量可以出现的地方，都可以被值替代
     * 打印一个星
     */
    public void printOneStar() {
        System.out.print("*\t");
    }

    /**
     * n 个星
     *
     * @param n 参数
     */
    public void printStarByN(int n) {
        if (n < 0) {
            throw new RuntimeException("n不能小于0");
        }
        for (int i = 0; i < n; i++) {
            printOneStar();
        }
    }

    /**
     * 打印 n 行 m 个星
     *
     * @param n 参数
     * @param m 参数
     */
    public void printStarWithRow(int n, int m) {
        if (n < 0) {
            throw new RuntimeException("n不能小于0");
        }
        for (int i = 0; i < n; i++) {
            for (int i1 = 0; i1 < m; i1++) {
                System.out.print((i <= i1 ? "_" : "*") + "\t");
            }
            System.out.println();
        }
    }


//    public static void main(String[] args) {
//        // 1 *
//        // 2 N 1
//        // 3 N 2
//        LearnDoubleFor ldf = new LearnDoubleFor();
//        ldf.queston01(9, 9);
//    }


    public void queston01(int n, int m) {
        if (n < 0) {
            throw new RuntimeException("n不能小于0");
        }
        for (int i = 0; i < n; i++) {
            for (int i1 = 0; i1 < m; i1++) {
                System.out.print((i <= n >> 1 && i1 >= (m >> 1) - i && i1 <= (m >> 1) + i) || (i > (n >> 1) && i1 >= (m >> 1) - 1 && i1 <= (m >> 1) + 1) ? "*\t" : " \t");
//                System.out.print(i1 < (m >> 1)-i || i1 > (m >>1) + i?" \t":"*\t");
            }
            System.out.println();
        }
    }


    public static void main(String[] args) {
        for (int i = 0; i < 9; i++) {
            for (int i1 = 0; i1 < 9; i1++) {
                //上部 i<=4  // 上部左侧 i1 < 4 - i   //  上部右侧 i1 > 4 + i

                boolean top_left = i <= 4 && (i1 < 4 - i);
                boolean top_right = i <= 4 && (i1 > 4 + i);

                boolean bottom_left = i > 4 && (i1 < i - 4);
                boolean bottom_right = i > 4 && (i1 >= 9 - (i - 4));

                System.out.print(top_left || top_right || bottom_left||bottom_right?" \t":"*\t");

//                if(top_left || top_right || bottom_left||bottom_right){
//                    System.out.print(" \t");
//                }else{
//                    System.out.print("*\t");
//                }

//                if (i <= 4 && (i1 < 4 - i || i1 > 4 + i)) {
//                    System.out.print(" \t");
//
//                    //下半部 //下部左侧  i1 < i -4 //下部右侧 i1 >= 9 - (i - 4)
//                } else if (i > 4 && (i1 < i - 4 || i1 >= 9 - (i - 4))) {
//                    System.out.print(" \t");
//                } else {
//                    System.out.print("*\t");
//                }
            }
            System.out.println();
        }
    }

}
